export const combineReducers = function (reducers) {
    // reducers 是一个对象，以键值对存储了 ： 模块名 & 每一个模块的 reducer
    let reducerskeys = Reflect.ownKeys(reducers)
    // reducerskeys:['vote', 'personal']
    // 返回一个合并后的 reducer
    //  + 每一次 dispatch 派发，都是把这个 reducer 执行
    //  + state 就是redux容器中的 更改状态
    //  + action 就是派发时候传递进来的行为对象
    return function reducer(state = {}, action) {
        // 把 reducers 中每一个小的 reducer(每个模块的reducer)执行
        // 把对于模块的状态 action 行为对象传递进来，返回值替换当前模块下的状态！！
        let nextState = {}
        reducerskeys.forEach(key => {
            // key:'vote'/'personal'
            // reducer:每个模块的 reducer
            let reducer = reducers[key]
            nextState[key] = reducer(state[key], action)
        })
        return nextState
    }
}


// store.dispatch({
//     type: "TYPES.VOTE_SUP"
// })